home *** CD-ROM | disk | FTP | other *** search
- Network Working Group Keith Moore
- Internet Draft University of Tennessee
- 24 October 1993
-
-
- Multipart/References MIME Content-Type
-
- draft-moore-mime-references-00.txt
-
-
- 1. Status of this Memo
-
- This document is an Internet Draft. Internet Drafts are working
- documents of the Internet Engineering Task Force (IETF), its Areas, and
- its Working Groups. Note that other groups may also distribute working
- documents as Internet Drafts.
-
- Internet Drafts are valid for a maximum of six months and may be
- updated, replaced, or obsoleted by other documents at any time. (The
- file 1id-abstracts.txt, available via anonymous ftp from nic.ddn.mil,
- describes the current status of each Internet Draft.) It is not
- appropriate to use Internet Drafts as reference material or to cite them
- other than as "work in progress".
-
-
- 2. Abstract
-
- This memo defines a new MIME content-type "multipart/references",
- which can be used to denote a set of MIME contents, of which any one may
- reference the others by its MIME content-id. This mechanism may be used
- by presentation languages that wish to be able to reference MIME
- objects, or by other applications (file transfer, authentication,
- delivery reports) which need to supply related information about another
- MIME object.
-
-
- 3. Introduction
-
- Several new MIME [1] -based applications are being developed which
- require data that is best represented (within a MIME message) as
- multiple MIME body parts. Frequently, such applications simply need to
- "embellish" or provide additional information about one or more other
- objects, which themselves are naturally represented as MIME body parts.
- Examples of such applications include the following:
-
- + File transfer. When using MIME to transfer a file, it is useful to
- represent the file being transferred as a MIME body part (with
- appropriate MIME content-type labelling), and provide additional
- information (ownership, creation date, permissions, icon, or data
- specific to a particular system) in a separate body part. A MIME
- mail reader could present the contents of the file being
- transferred in addition to offering to store the file on the
- recipient's file system.
-
-
-
-
- K. Moore Expires 24 April 1994 [Page 1]
-
-
-
- Multipart/References 24 October 1993
-
-
-
- + Authentication. A separate body part could be used as a
- certificate of authorship and integrity check, using protocols such
- as PEM [2,3,4,5].
-
- + Delivery and receipt notifications. A delivery status notification
- (or receipt notification) may include both the original message,
- and a separate body part indicating why the delivery of the message
- failed. The mechanism defined in this memo could be used to
- illustrate the relationship between the two.
-
- + Hypertext systems. It may be desirable to transmit a set of
- hypertext documents which reference one another, in a single MIME
- message.
-
- + Presentation languages. Since MIME says little about how the
- objects it carries are to be presented, this extension may be used
- by presentation languages that wish to reference other MIME
- objects.
-
- Although MIME [5] defines a content-id header which can be used for
- this purpose, it provides no mechanism by which one body part can
- reference another. Neither does it provide a mechanism to indicate
- whether a particular body part should be presented by a mail reader,
- stored in a file (as in an attachment), or whether the body part is
- intended to be referenced by another body part.
-
- This memo thus defines:
-
- + a "multipart/references" content-type to be used to indicate a set
- of body parts that may reference one another.
-
- + a new "internal" access-type for the message/external-body content-
- type, which instructs the mail reader to present another body part
- contained within the same multipart/references content. (This is
- intended to be used within multipart/alternative, as a fallback for
- when better presentation languages are not supported.)
-
-
- 4. The Multipart/References Content-Type
-
- The Multipart/References Content-Type is defined as follows:
-
- MIME type name: multipart
- MIME subtype name: references
- Required parameters: start
- Optional parameters: none
- Encoding considerations: No content-transfer-encoding may be used.
- Security considerations: none
-
- NOTE IN DRAFT: this content-type needs a better name. Suggestions
- are welcome!
-
-
-
- K. Moore Expires 24 April 1994 [Page 2]
-
-
-
- Multipart/References 24 October 1993
-
-
-
-
- The "start" parameter contains the content-id of one of the immediate
- children of the multipart/references body part being defined (without
- the enclosing '<' and '>'). It indicates to the mail reader which of
- the components of the multipart/references should be presented.
-
- When presenting a multipart/references body part, the mail reader
- first scans all of the components contained within. Then it presents
- the component whose content-id is indicated by the "start" parameter.
- The "start" component may then reference other body parts contained
- within the same, or an enclosing, multipart/references body part. If an
- external program is responsible for presenting the "start" body part,
- the mail reader will run it in an environment from which it can obtain
- the other body parts (and associated headers) by using their content-id.
-
- Any component of a multipart/references body part (not just the
- "start" component) may reference any other component within the same (or
- an enclosing) multipart/references body part. (The module charged with
- presenting the "start" component may cause other components of the
- multipart/references body part to be presented, which themselves
- reference other body parts.)
-
- Other than storing the information associated with each component of
- a multipart/references body part to allow for later retrival, and
- undoing any content-transfer-encoding applied to the component, no
- processing is performed on any of the components, before presenting the
- "start" component.
-
- NOTE: This includes any "composite" content-types such as multipart,
- message/external-body, or message/rfc822. If such objects are
- referenced by other components, they will obtain the original headers
- and/or (decoded) body comprising the multipart, message/external-
- body, or message/rfc822 body part. The individual components or sub-
- components of a composite CANNOT be directly referenced by another
- body part, unless it first parses the components.
-
- A component of a multipart/references body part need not include a
- content-id header. However, without such a header, there is no way for
- it to either be the "distinguished" component, or to be refernced by
- another component. Such components will only be presented by a mail
- reader that does not implement this specification.
-
-
- 5. The "internal" Access-Type for Message/External-Body
-
- A new access-type is defined for the MIME Message/External-Body
- content-type. The "internal" access-type indicates that the actual body
- of this particular message/external-body body part, should be obtained
- from another body part contained within an enclosing
- multipart/references body part. The mandantory parameter for this
- access-type is:
-
-
-
- K. Moore Expires 24 April 1994 [Page 3]
-
-
-
- Multipart/References 24 October 1993
-
-
-
- CONTENT-ID -- the content-id of the body part being referenced
-
- The value associated with the content-id parameter should NOT include
- the enclosing '<' and '>' required by the content-id body part header.
-
- NOTE IN DRAFT: alternatives for the name "internal" are also solicited!
-
- When the internal access-type is used, the headers that appear in the
- body of the message/external-body part will normally be similar to the
- body part headers that appear with the referenced body part. However,
- the headers need not be the identical, since it may be desirable to
- present the object slightly differently under different conditions. In
- any case, when a message/external-body body part is presented, the
- headers appearing in the body of the message/external-body body part are
- used, rather than those of the referenced body part.
-
- The "internal" access type is designed to allow "fallback" access to one
- or more components of a multipart/references body part. For example, a
- hypothetical application/foo body part might reference other body parts
- A, B, and C. If the recipient's mail reader doesn't support
- application/foo, the sender might want her to see A, B, and C anyway.
- So the message could be constructed as follows. (In this example, A, B,
- C, and D are the content-ids of the components of the
- multipart/references body part.)
-
-
- multipart/references ; start=D {
- A: [body-part-A]
- B: [body-part-B]
- C: [body-part-C]
- D: multipart/alternative {
- application/foo (which references A, B, and C internally)
- multipart/mixed
- message/external-body; access-type=internal; content-id=A
- message/external-body; access-type=internal; content-id=B
- message/external-body; access-type=internal; content-id=C
- }
- }
-
-
- 6. Security considerations
-
- Security considerations are not discussed in this memo.
-
-
- 7. Acknowledgements
-
- This proposal is an amalgam resulting from ideas presented in several
- other approaches to this problem, including Harald Tveit Alvestrand's
- "multipart/related", Dave Crocker's "multipart/header-set", and Rens
- Troost's "content-disposition" documents. (There are probably others
-
-
-
- K. Moore Expires 24 April 1994 [Page 4]
-
-
-
- Multipart/References 24 October 1993
-
-
-
- that I don't recall at the moment.) Discussion on the ietf-822 and
- info-metamail mailing lists has helped to define the requirements for
- this proposal.
-
-
- 8. References
-
- [1] N. Borenstein, N. Freed, "MIME (Multipurpose Internet Mail
- Extensions) Part One: Mechanisms for Specifying and Describing the
- Format of Internet Message Bodies", RFC 1521, September 23 1993.
- [2] J. Linn, "Privacy Enhancement for Internet Electronic Mail: Part
- I: Message Encryption and Authentication Procedures". RFC 1421,
- February 10 1993.
- [3] S. Kent, "Privacy Enhancement for Internet Electronic Mail: Part
- II: Certificate-Based Key Management", RFC 1422, February 10 1993.
- [4] D. Balenson, "Privacy Enhancement for Internet Electronic Mail:
- Part III: Algorithms, Modes, and Identifiers", RFC 1423, February
- 10 1993.
- [5] B. Kaliski, "Privacy Enhancement for Internet Electronic Mail: Part
- IV: Key Certification and Related Services", RFC 1424, Febryary 10,
- 1993.
-
-
- 9. Author's address
-
- Keith Moore
- University of Tennessee
- 107 Ayres Hall
- Knoxville, TN 37996-1301
- USA
-
- email: moore@cs.utk.edu
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- K. Moore Expires 24 April 1994 [Page 5]
-
-
-
- Multipart/References 24 October 1993
-
-
-
- Appendix. Implementation suggestion
-
- This proposal requires that the "modules" responsible for presenting a
- body part be able to reference other body parts. The mechanisms by
- which this might be done vary considerably from one system to another
- (e.g. logical names on VMS, shared file descriptors on UNIX). Because
- dissimilar systems often share code nowadays, there is some advantage in
- having a system-independent way to provide such access. Here is a
- suggestion for how this might be done in a relatively painless manner.
-
- When a mail reader encounters a multipart/references body part, it
- proceeds to scan each of the components. Each component's headers are
- stored in a temporary file, and the body part (after undoing any
- content-transfer-encoding) is stored in a separate temporary file. The
- names of the files are based on the content-id of the body part being
- stored.
-
- Since content-IDs may contain special characters not allowed in a file
- name, or may be longer than the length of a file name, they may be
- mapped into legal file names as follows:
-
- 1. Remove the '<' and '>' enclosing the content-id.
- 2. Apply the MD5 digest algorithm (see RFC 1321) to the result.
- 3. Separate the resulting 128-bit digest into four groups of 32 bits
- each, and exclusive-or together all four groups, producing a 32-bit
- result.
- 4. Encode the resulting 32-bit quantity as 8 hexadecimal, upper case
- characters.
- 5. If necessary, truncate the resulting character string so that it fits
- within the limits of the local file system (leaving room for a four
- character filename suffix).
- 6. Append the string ".HDR" to produce the filename to contain the
- header, and ".BDY" for the filename to contain the body part.
- 7. The calling program should remove the temporary files after the sub-
- program completes its work.
-
- The author hopes this method will be sufficient for any modern file
- system. File name collisions are presumed to be unlikely, but paranoid
- implementors might want to modify the filename suffix should collisions
- occur.
-
- An application programmer's interface should be provided to handle the
- details of translating file names and manipulating the resulting files.
- Such an interface could also be extended "underneath" to provide more
- efficient access where the operating system supports it, e.g. by sharing
- memory between processes.
-
-
-
-
-
-
-
-
- K. Moore Expires 24 April 1994 [Page 6]
-